package worldinruin;

import java.util.ArrayList;

import worldinruin.core.IGame;
import worldinruin.core.ISoldier;
import worldinruin.core.imp.battle.Battle;
import worldinruin.file.IFile;
import worldinruin.gui.IGui;
import worldinruin.resources.IconMap;
import worldinruin.rules.IRules;

public interface IGameDataHandler {
	
	/**
	 * Contains a set of different types of soldiers available for purchase in game.
	 * @return Available soldiertypes.
	 */
	ArrayList<ISoldier> getSoldierTypes();
	
	/**
	 * Returns the current game in session.
	 * @return Ongoing game.
	 */
	IGame getGame();
	
	/**
	 * Gets an instance of file.
	 * @return A file instance.
	 */
	IFile getFile();
	
	/**
	 * When a game is created, it sets the game to GameDataHandler.
	 * @param game Sets this game to ongoing one.
	 */
	void setGame(IGame game);
	
	/**
	 * Gives back the GUI object.
	 * @return GUI object.
	 */
	IGui getGui();
	
	/**
	 * Uses this to allow components to use icons.
	 * @return Map to use icons.
	 */
	IconMap getIconMap();

	/**
	 * Gets rules used in game.
	 * @return Rules for the game.
	 */
	IRules getRules();
	
	/**
	 * Set battle to GameDataHandler.
	 */
	void setBattle(Battle battle);
	
	/**
	 * Gets current ongoing battle.
	 * @return
	 */
	Battle getBattle();

}
